<!DOCTYPE html>
<html lang="en-US">
  <head>
    <link href="/assets/index.css" rel="stylesheet" type="text/css" />
    <script crossorigin="anonymous" src="/test-harness.js"></script>
    <script crossorigin="anonymous" src="/test-page-object.js"></script>
    <script crossorigin="anonymous" src="/__dist__/webchat-es5.js"></script>
  </head>
  <body>
    <main id="webchat"></main>
    <script>
      run(async function () {
        const directLine = await testHelpers.createDirectLineWithTranscript([
          {
            type: 'message',
            id: '1',
            channelId: 'directline',
            from: { role: 'bot' },
            locale: 'en-US',
            text: 'Showing card',
            attachmentLayout: 'carousel',
            timestamp: '2019-08-08T16:41:12.9397263Z',
            attachments: [
              {
                contentType: 'application/vnd.microsoft.card.adaptive',
                content: {
                  type: 'AdaptiveCard',
                  body: [
                    {
                      type: 'TextBlock',
                      size: 'Medium',
                      text: 'Tap on this Adaptive Card will open Bing.com.'
                    }
                  ],
                  $schema: 'http://adaptivecards.io/schemas/adaptive-card.json',
                  version: '1.2',
                  selectAction: {
                    type: 'Action.OpenUrl',
                    url: 'https://bing.com/'
                  }
                }
              }
            ]
          }
        ]);

        WebChat.renderWebChat(
          {
            directLine,
            store: testHelpers.createStore()
          },
          document.getElementById('webchat')
        );

        await pageConditions.minNumActivitiesShown(1);

        const calls = [];

        window.open = (url, windowName, windowFeatures) => calls.push([url, windowName, windowFeatures]);

        const activities = pageElements.activities();
        const adaptiveCard = activities[activities.length - 1].querySelector('.ac-adaptiveCard');

        adaptiveCard.click();

        expect(calls).toHaveProperty('length', 1);
        expect(calls[0][0]).toEqual('https://bing.com/');
        expect(calls[0][1]).toEqual('_blank');

        const windowFeatures = (calls[0][2] || '').split(new RegExp('\\s+', 'gu'));

        expect(windowFeatures.includes('noopener')).toBe(true);
        expect(windowFeatures.includes('noreferrer')).toBe(true);
      });
    </script>
  </body>
</html>
